﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Hiro.Interfaces;
using Hiro.ActivationPoints.Interfaces;

namespace Hiro.Loaders.Interfaces
{
    /// <summary>
    /// Represents a type that can convert a list of dependencies and a list of activation points
    /// into a list of activation points grouped by dependency.
    /// </summary>
    public interface IDependencyMapper
    {
        /// <summary>
        /// Converts a list of dependencies and activation points into a service map.
        /// </summary>
        /// <param name="dependencies">The list of dependencies.</param>
        /// <param name="activationPoints">The list of activation points.</param>
        /// <returns>The service map.</returns>
        IDictionary<IDependency, IList<ITypeActivationPoint>> GetServiceMap(IEnumerable<IDependency> dependencies,
                                                                            IEnumerable<ITypeActivationPoint>
                                                                                activationPoints);
    }
}
